import {dns} from "../config";

let id = localStorage.getItem("userId");
let ws = null;
let wsUrl = 'ws://';
wsUrl = /\d/.test(dns) ? `${wsUrl}${dns}:8088` : `${wsUrl}${dns}`;
wsUrl += "/ws?userId=" + id;

// 创建websocket
function createWebSocket() {
  try {
    ws = new WebSocket(wsUrl);
    // 初始化事件
    init();
  } catch (e) {
    reconnect();
  }
}

// 重连
function init() {
  // ws 监听onclose事件
  ws.onclose = function () {
    // console.log('链接关闭');
    // close事件触发后重连
    reconnect();
  };

  ws.onerror = function () {
    console.log('发生异常了');
    // 连接发生异常需要重连
    // reconnect();
  };
  // 连接打开的时候触发
  ws.onopen = function () {
    // console.log('链接打开')
    // 连接打开后发送心跳
    // heartCheck.start();
  };
  // 收到服务端消息的时候触发
  ws.onmessage = function (e) {
    if (e.data.indexOf('心跳超时') > -1) {
      return reconnect();
    }
    if (e.data == '连接成功') return;

    if (e && e.data) {
      window.dispatchEvent(new CustomEvent('myEvent', {
        detail: e.data || e.detail
      }))
    }
    //拿到任何消息都说明当前连接是正常的，然后接着继续发送心跳
    // heartCheck.start();
  }
}

var lockReconnect = false;//避免重复连接
var tt = null;

function reconnect() {
  if (lockReconnect) {
    return;
  }
  lockReconnect = true;

  //没连接上会一直重连，设置延迟避免请求过多
  tt && clearTimeout(tt);
  tt = setTimeout(function () {
    createWebSocket();
    lockReconnect = false;
  }, 4000);
}


//
// const initWebSocket = async () => {
//   console.log('id:' + id)
//   if ("WebSocket" in window) {
//     // socket = new WebSocket('ws://121.40.203.240:8088/ws?userId='+id);
//     // socket = new WebSocket('wss://a1.3ayouxi.cn/prod-api/websocket/message/' + id);
//     // socket = new WebSocket('wss://540677mn14.vicp.fun/websocket/message/' + id);
//     //  socket = new WebSocket('ws://47.121.24.157:8080/prod-api/websocket/message/' + id);
//     //  socket = new WebSocket('ws://47.104.239.32:8080/prod-api/websocket/message/' + id);
//     //  socket = new WebSocket('ws://47.104.172.224/websocket/message/' + id);
//     //  socket = new WebSocket('ws://47.116.68.113:8088/ws?userId='+id);
//     // socket = new WebSocket('wss://h540d67714.vicp.fun/ws?userId='+id);
//     //  socket = new WebSocket('ws://localhost:8088/ws?userId=' + id);
//     //  socket = new WebSocket('ws://8.130.99.31:8088/ws?userId=' + id);
//     //  socket = new WebSocket('ws://47.104.239.32/prod-api/websocket/message/' + id);y
//     //  socket = new WebSocket('wss://www.qingtiands.cn/prod-api/websocket/message/' + id);
//     // socket = new WebSocket('wss://pt.jiaoyimiao.cn/prod-api/websocket/message/' + id);
//     // socket = new WebSocket('wss://a1.3ayouxi.cn/prod-api/websocket/message/' + id);
//     // socket = new WebSocket('ws://192.168.0.80:8088/ws?userId=' + id);
//     // socket = new WebSocket('ws://121.40.203.240:8081/prod-api/websocket/message/' + id);
//     socket.onerror = webSocketOnError;
//     socket.onmessage = webSocketOnMessage;
//     socket.onclose = closeWebsocket;
//     socket.onopen = openWebsocket;
//   } else {
//     Notification.error({
//       title: "错误",
//       message: "您的浏览器不支持websocket，请更换Chrome或者Firefox",
//     });
//   }
// }

//具体问题具体分析,把需要用到的方法暴露出去
export default {
  createWebSocket,
  close
};
